package com.example.deepschool.service.CourseContent;


import com.example.deepschool.Model.Response.ResponseData;

/**
 * 课程内容管理接口。
 * 提供课程内容的增、删、改、查等操作。
 */
public interface CourseContent {

    /**
     * 添加课程内容。
     *
     * @param courseContent 课程内容对象，包含待添加的具体内容。
     * @param JsonContent   课程内容的JSON格式数据，用于补充或替代对象直接属性值。
     * @param UUID          操作的唯一标识，用于追踪和审计。
     */
    void addCourseContent(com.example.deepschool.Model.CourseContent courseContent, String JsonContent, String UUID);

    /**
     * 更新课程内容。
     *
     * @param courseContent 课程内容对象，包含待更新的具体内容。
     * @param JsonData   课程内容的JSON格式数据，用于补充或更新对象属性值。
     * @param UUID          操作的唯一标识，用于追踪和审计。
     */
    void update(com.example.deepschool.Model.CourseContent courseContent, String JsonData, String UUID);

    /**
     * 删除课程内容。
     *
     * @param courseContent 课程内容对象，标识待删除的具体内容。
     * @param UUID          操作的唯一标识，用于追踪和审计。
     */
    void delete(com.example.deepschool.Model.CourseContent courseContent, String UUID);

    /**
     * 根据课程ID获取课程内容。
     *
     * @param courseId 课程ID，用于定位具体课程的内容。
     * @param UUID     操作的唯一标识，用于追踪和审计。
     * @return 课程内容数组，如果课程ID不存在或没有内容，则返回空数组。
     */
    com.example.deepschool.Model.CourseContent[] getCourseContentByCourseId(Long courseId, String UUID);
	
	/**
	 * 根据课程ID获取课程内容JSON数据。
	 *
	 * @param courseId 课程ID，用于定位具体课程的内容。
	 * @param address  请求的URL地址，用于记录请求来源。
	 * @param UUID     操作的唯一标识，用于追踪和审计。
	 */
	ResponseData getCourseContentJsonData (Long courseId, String address, String UUID);
}
